a=45  # 二进制为0010 1101
b=25  # 二进制为0001 1001
print("a =" ,a, "b =", b)

# 按位与&
c=a&b   # 二进制对应位，都为1，结果为1，否则为0，结果为：0000 1001，即为9
print("a&b =", c) 

# 按位或|
c=a|b   # 二进制对应位，只要有1个为1，结果为1，否则为0，结果为：0011 1101，即为61
print("a|b =", c) 

# 按位异或^
c=a^b   # 二进制对应位，只要相异(不同)，结果为1，否则为0，结果为：0011 0100，即为52
print("a^b =", c) 

# 按位取反~
c=~a   # 把这个数二进制的每一位，1变0，0变1，结果为：1101 0010(此时最高位是符号位)，即为-46
print("~a =", c) 

# 左移<<
c=a<<2   # 把这个数二进制的每一位，全部左移2位，高位丢弃，低位补0，结果为：1011 0100，即为180
print("a<<2 =", c) 

# 右移>>
c=a>>2   # 把这个数二进制的每一位，全部右移2位，低位丢弃，高位补0，结果为：0000 1011，即为11
print("a>>2 =", c) 